package config

import "github.com/spf13/viper"

/*
viper 开源的配置解决方案，可以：
设置默认值
可以读取json、yaml、hcl  格式的配置文件
监控配置文件启动，热加载配置文件
支持从环境变量读取配置
支持从远程配置文件读取
从命令行读取配置

读取到配置之后使用
viper.GetString() -- 获取字符串类型
viper.GetInt() -- 获取整数类型
viper.GetBool() -- 获取bool类型
*/

//var Add string = ":8000"

// 定义结构体Config, Name 为配置文件的名字
type Config struct {
	Name string
}

// 为结构体添加方法 InitConfig  --》 初始化配置文件
func (c *Config) InitConfig() error {
	if c.Name != "" {
		//如果执行了配置文件，则解析指定的配置文件
		viper.SetConfigFile(c.Name)
	} else {
		//如果没有指定配置文件，则默认解析的配置文件为（conf/config）
		viper.AddConfigPath("conf")
		viper.SetConfigName("config")
	}

	//设置配置文件格式为YAML
	viper.SetConfigType("yaml")
	//读取配置，发生错误就返回err
	if err := viper.ReadInConfig(); err != nil {
		return err
	}
	return nil
}
